package com.bh.order.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.bh.order.domain.JcLed;
import com.bh.order.dto.JcLedQueryDto;
import com.bh.order.vo.*;

import java.util.List;

/**
 * 分段订单Service接口
 *
 * @author slx
 * @date 2023-04-24
 */
public interface IJcLedService extends IService<JcLed> {
    /**
     * 查询分段订单
     *
     * @param id 分段订单主键
     * @return 分段订单
     */
    public JcLed selectJcLedById(Long id);

    /**
     * 查询分段订单列表
     *
     * @param jcLed 分段订单
     * @return 分段订单集合
     */
    public int signReceiving(JcLedSignReceivingVo jcLedSignReceivingVo);

    /**
     * @param jcLedSizeVo
     * @return
     */
    public int saveLedSize(JcLedSizeVo jcLedSizeVo);

    /**
     * 自提签收功能
     * @param signVo
     * @return
     */
    public int setSelfPickSign(JcLedSignReceivingVo signVo);

    /**
     * 配载到运单，此功能暂时不开放，原因是 led 订单在扫码的时候会直接进入，除非特殊原因才会启用
     * @param carryToShipVo
     * @return
     */
    public int carryToShip(JcLedCarryToShipVo carryToShipVo);

    /**
     * 查询分段订单列表
     * @param jcOrderId
     * @return
     */
    public List<JcLed> selectDeliverJcLedsByOrderId(Long jcOrderId);

    /**
     * 外包加载货品明细
     * @param jcShipmentId
     * @return
     */
    public List<JcLed> getWbStowageByShipmentId(Long jcShipmentId);

    /**
     * 加载以被运单配载的表格
     * @param jcShipmentId
     * @return
     */
    public List<JcLed> getStowageByShipmentId(Long jcShipmentId);

    /**
     * 加载以被运单配载的表格
     *
     * @return
     */
    public List<JcLed> getDispatchNotStowage();

    /**
     * 加载以被运单配载的表格
     *
     * @return
     */
    public List<JcLed> getDispatchStowage(Long dispatchId);

    /**
     * 加载以被运单配载的表格
     *
     * @return
     */
    public int addDispatchOrder(Long[] ledIds);

    /**
     * 查询分段订单列表
     *
     * @return 分段订单集合
     */
    public List<JcLed> getDZLedList(Long jcShipmentId);

    /**
     * 查询分段订单列表
     *
     * @param jcLed 分段订单
     * @return 分段订单集合
     */
    public List<JcLed> selectCustomerJcLedList(JcLedQueryDto jcLed);
    /**
     * 查询分段订单列表
     *
     * @param jcLed 分段订单
     * @return 分段订单集合
     */
    public List<JcLed> selectCustomerAllJcLedList(JcLedQueryDto jcLed);


    /**
     * 查询分段订单列表
     *
     * @param jcLed 分段订单
     * @return 分段订单集合
     */
    public List<JcLedVO> getJcLedList(JcLedVO jcLed);

    /**
     * 查询分段订单列表
     *
     * @param jcLed 分段订单
     * @return 分段订单集合
     */
    public List<JcLedVO> getOrderQS(JcLedVO jcLed);


    /**
     * 查询分段订单列表
     *
     * @return 分段订单集合
     */
    public List<JcLed> getLedList(Long shipmentId);

    /**
     * @param shipmentId
     * @return
     */
    public List<JcLedLoadingDetailVo> getLoadList(Long shipmentId);


    /**
     * @param shipmentId
     * @return
     */
    public List<JcLedUnLoadingDetailVo> getUnLoadList(Long shipmentId);

    /**
     * @param sendId
     * @return
     */
    public List<JcLedPreSendDetailVo> getPreSendList(Long sendId);


    /**
     * 查询 查询订单收入确认列表
     * @param queryDto
     * @return
     */
    public List<JcLedVO> selectInventoryLedList(JcLedVO queryDto);

    /**
     * 新增分段订单
     *
     * @param jcLed 分段订单
     * @return 结果
     */
    public int insertJcLed(JcLed jcLed);

    /**
     * 修改分段订单
     *
     * @param jcLed 分段订单
     * @return 结果
     */
    public int updateJcLed(JcLed jcLed);


    /**
     * 修改分段订单
     *
     * @param jcLeds 分段订单
     * @return 结果
     */
    public void handleJcLedInsert(List<JcLed> jcLeds);

    /**
     * 批量删除分段订单
     *
     * @param ids 需要删除的分段订单主键集合
     * @return 结果
     */
    public int deleteJcLedByIds(Long[] ids);

    /**
     * 删除分段订单信息
     *
     * @param id 分段订单主键
     * @return 结果
     */
    public int deleteJcLedById(Long id);


    public int confirmSend(Long sendId);
}
